home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / macros / latex209 / contrib / harvard / harvard.sty < prev    next >
Text File  |  1994-06-16  |  6KB  |  160 lines

  1. %% Author: Peter Williams peterw@archsci.arch.su.edu.au
  2. \message{harvard bibliography,}
  3.  
  4. \def\@hiteml[#1]#2#3#4{\item[]\if@filesw%
  5.       { \def\protect##1{\string ##1\space}\immediate%
  6. \write\@auxout{\string\harvardcite{#4}{#2}{#1}{#3}}}\fi%
  7. \protect\hspace*{-\labelwidth}\protect\hspace*{-\labelsep}\ignorespaces}
  8.  
  9. \def\@hitem#1#2#3{\item[]\if@filesw%
  10.       { \def\protect##1{\string ##1\space}\immediate%
  11. \write\@auxout{\string\harvardcite{#3}{#1}{#1}{#2}}}\fi%
  12. \protect\hspace*{-\labelwidth}\protect\hspace*{-\labelsep}\ignorespaces}
  13.  
  14. \def\harvarditem{\@ifnextchar [{\@hiteml}{\@hitem}}
  15.  
  16. \def\harvardcite#1#2#3#4{
  17.   \global\@namedef{bhf@#1}{#2}
  18.   \global\@namedef{bha@#1}{#3}
  19.   \global\@namedef{bhy@#1}{#4}\global\@namedef{b@#1}{\csname bhf@#1\endcsname}
  20. }
  21.  
  22. \def\citationmode#1{\gdef\@cite@mode{\csname @cite@#1\endcsname}}
  23. \def\@cite@full{bhf@}
  24. \def\@cite@abbr{bha@}
  25. \def\@cite@default{b@}
  26. \def\@cite@mode{\@cite@default}
  27.  
  28. \def\cite{\@ifnextchar [{\@tempswatrue\@citex}{\@tempswafalse\@citex[]}}
  29. \def\citeaffixed{\@ifnextchar [{\@tempswatrue\@citeaffixedx} 
  30.                             {\@tempswafalse\@citeaffixedx[]}
  31. }
  32. \def\citeasnoun{\@ifnextchar [{\@tempswatrue\@citexasnoun}
  33.                            {\@tempswafalse\@citexasnoun[]}
  34. }
  35. \def\possessivecite{\@ifnextchar [{\@tempswatrue\@possessivecitex}
  36.                            {\@tempswafalse\@possessivecitex[]}
  37. }
  38. \def\citeyear{\@ifnextchar [{\@tempswatrue\@citexyear}
  39.                            {\@tempswafalse\@citexyear[]}
  40. }
  41. \def\citename{\@ifnextchar [{\@tempswatrue\@citexname}
  42.                            {\@tempswafalse\@citexname[]}
  43. }
  44.  
  45. % \def\@enamedef#1{\expandafter\edef\csname #1\endcsname}
  46. % Previous line should be replaced by the following to prevent
  47. % problems with the NFSS. Solution by Bernd Raichle.
  48. \def\@enamedef#1{\expandafter\def\csname #1\expandafter\endcsname\expandafter}
  49.  
  50. \def\@citex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
  51.   \def\@citea{}\@cite{\@for\@citeb:=#2\do
  52.     {\@citea\def\@citea{\@hisep\penalty\@m\ }\@ifundefined
  53.        {b@\@citeb}{{\bf ?}\@warning
  54.        {Citation `\@citeb' on page \thepage \space undefined}}%
  55. {{\csname \@cite@mode\@citeb\endcsname\@hysep\csname bhy@\@citeb\endcsname}%
  56. \global\@enamedef{b@\@citeb}{\csname bha@\@citeb\endcsname}}%
  57. }}{#1}}
  58.  
  59. \def\@citeaffixedx[#1]#2#3{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
  60.   \def\@citea{}\@citeaffixed{\@for\@citeb:=#2\do
  61.     {\@citea\def\@citea{\@hisep\penalty\@m\ }\@ifundefined
  62.        {b@\@citeb}{{\bf ?}\@warning
  63.        {Citation `\@citeb' on page \thepage \space undefined}}%
  64. {{\csname \@cite@mode\@citeb\endcsname\@hysep\csname bhy@\@citeb\endcsname}%
  65. \global\@enamedef{b@\@citeb}{\csname bha@\@citeb\endcsname}}%
  66. }}{#1}{#3}}
  67.  
  68. \def\@citexasnoun[#1]#2{%
  69. \if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi%
  70. \@citeasnoun{{\@ifundefined%
  71. {b@#2}%
  72. {{\bf ?}\@warning{Citation `#2' on page \thepage \space undefined}}%
  73. {{\csname \@cite@mode#2\endcsname\ \harvardleft\csname bhy@#2\endcsname}%
  74. \global\@namedef{b@#2}{\csname bha@#2\endcsname}}%
  75. }}{#1}}
  76.  
  77. \def\@possessivecitex[#1]#2{%
  78. \if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi%
  79. \@citeasnoun{{\@ifundefined%
  80. {b@#2}%
  81. {{\bf ?}\@warning{Citation `#2' on page \thepage \space undefined}}%
  82. {{\csname \@cite@mode#2\endcsname's\ \harvardleft\csname bhy@#2\endcsname}%
  83. \global\@namedef{b@#2}{\csname bha@#2\endcsname}}%
  84. }}{#1}}
  85.  
  86. \def\@citexname[#1]#2{%
  87. \if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi%
  88. \@citename{{\@ifundefined%
  89. {b@#2}%
  90. {{\bf ?}\@warning{Citation `#2' on page \thepage \space undefined}}%
  91. {{\csname bhf@#2\endcsname}}%
  92. }}{#1}}
  93.  
  94. \def\@citexyear[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
  95.   \def\@citeayear{}\@citeyear{\@for\@citebyear:=#2\do
  96.     {\@citeayear\def\@citeayear{\@hisep\penalty\@m\ }\@ifundefined
  97.        {b@\@citebyear}{{\bf ?}\@warning
  98.        {Citation `\@citebyear' on page \thepage \space undefined}}%
  99. {{\csname bhy@\@citebyear\endcsname}%
  100. }%
  101. }}{#1}}
  102.  
  103. \gdef\hysep@agsm{\ }\gdef\hisep@agsm{,}%
  104. \gdef\hysep@dcu{, }\gdef\hisep@dcu{;}%
  105. \gdef\harvand@agsm{\&}
  106. \gdef\harvand@dcu{and}
  107. \let\@hysep\hysep@agsm \let\@hisep\hisep@agsm
  108. \let\harvardand\harvand@agsm
  109. \def\citationstyle#1{%
  110. \global\@namedef{@hysep}{\csname hysep@#1\endcsname}%
  111. \global\@namedef{@hisep}{\csname hisep@#1\endcsname}%
  112. \global\@namedef{harvardand}{\csname harvand@#1\endcsname}}
  113.  
  114. \gdef\harbl@round{(}\gdef\harbr@round{)}%
  115. \gdef\harbl@square{[}\gdef\harbr@square{]}%
  116. \gdef\harbl@curly{\{}\gdef\harbr@curly{\}}%
  117. \gdef\harbl@angle{$<$}\gdef\harbr@angle{$>$}%
  118. \gdef\harbl@none{}\gdef\harbr@none{}%
  119. \let\harvardleft\harbl@round \let\harvardright\harbr@round
  120. \let\harvardyearleft\harbl@round \let\harvardyearright\harbr@round
  121. \def\harvardparenthesis#1{%
  122. \global\@namedef{harvardleft}{\csname harbl@#1\endcsname}%
  123. \global\@namedef{harvardright}{\csname harbr@#1\endcsname}}
  124. \def\harvardyearparenthesis#1{%
  125. \global\@namedef{harvardyearleft}{\csname harbl@#1\endcsname}%
  126. \global\@namedef{harvardyearright}{\csname harbr@#1\endcsname}}
  127.  
  128. %DEFAULT DEFINITIONS
  129. \def\@cite#1#2{\harvardleft{#1\if@tempswa , #2\fi}\harvardright}
  130. \def\@citeyear#1#2{\harvardyearleft{#1\if@tempswa , #2\fi}\harvardyearright}
  131. \def\@citeaffixed#1#2#3{\harvardleft#3\ {#1\if@tempswa , #2\fi}\harvardright}
  132. \def\@citeasnoun#1#2{{#1\if@tempswa , #2\fi\harvardright}}
  133. \def\@citename#1#2{{#1\if@tempswa \ \harvardleft#2\harvardright\fi}}
  134.  
  135. % CHANGE \end{document} - to handle double definitions
  136. \def\enddocument{\@checkend{document}\clearpage\begingroup
  137. \if@filesw \immediate\closeout\@mainaux
  138. \def\global\@namedef##1##2{}\def\newlabel{\@testdef r}%
  139. \def\bibcite{\@testdef b}%
  140. \def\harvardcite{\@testbibh}\@tempswafalse \makeatletter\input \jobname.aux
  141. \if@tempswa \@warning{Label(s) may have changed.  Rerun to get
  142. cross-references right}\fi\fi\endgroup\deadcycles\z@\@@end}
  143.  
  144. \def\@testbibh #1#2#3#4{
  145.   \def\@tempa{#2}\expandafter
  146.   \ifx \csname bhf@#1\endcsname \@tempa 
  147.      \def\@tempa{#3}\expandafter
  148.      \ifx \csname bha@#1\endcsname \@tempa
  149.        \def\@tempa{#4}\expandafter
  150.        \ifx \csname bhy@#1\endcsname \@tempa
  151.        \else \@tempswatrue
  152.        \fi
  153.      \else \@tempswatrue
  154.      \fi
  155.   \else
  156.      \@tempswatrue
  157.   \fi
  158. }
  159.  
  160.